package com.demo.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author : YU.TAN
 * @date : 2021/9/29 13:46
 */
@Configuration
public class RedissonAutoConfiguration {

    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private String port;
    @Value("${spring.redis.password}")
    private String passWord;
    @Value("${spring.redis.database}")
    private Integer database;


    /**
     * 单机版 配置
     * @return
     */
    @Bean
    public RedissonClient getRedissonClient() {
        Config config = new Config();
        config.useSingleServer().setAddress("redis://" + host + ":" + port)
//                .setPassword(passWord)
                .setDatabase(database == null ? 0 : database)
                .setRetryInterval(5000)
                .setTimeout(10000)
                .setConnectTimeout(10000);
        return Redisson.create(config);
    }

//    /**
//     * 主从版 配置
//     * @return
//     */
//    @Bean
//    public RedissonClient getRedissonClient() {
//        Config config = new Config();
//        config.useMasterSlaveServers().setMasterAddress("redis://" + host + ":" + port)
//                .setPassword(passWord)
//                .addSlaveAddress("redis://***（从服务器IP）:6379")
//                .setDatabase(database == null ? 0 : database)
//                .setRetryInterval(5000)
//                .setTimeout(10000)
//                //（连接超时，单位：毫秒 默认值：3000）
//                .setConnectTimeout(10000);
//        //哨兵模式
//        config.useSentinelServers()
//                .setMasterName("MasterRedis")
//                .setPassword(passWord)
//                .addSentinelAddress("***(哨兵IP):26379", "***(哨兵IP):26379", "***(哨兵IP):26380");
//
//        return Redisson.create(config);
//    }
}
